有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android SQL删除行

我正试图使用滑动操作从“结帐”屏幕中删除一个项目。滑动正在工作,问题是删除表行并更新列表(在一个片段中)。在代码中,catch报告了一个空指针异常,但我就是找不到它

下面是我的签出片段(您会注意到我将sql删除代码放在了一个try/catch块中,这样程序就不会出错):

public static class CheckoutFragment extends ListFragment {
    /**
     * 
     * The fragment argument representing the section number for this
     * fragment.
     */
    private static final String ARG_SECTION_NUMBER = "section_number";

    public List<Entry> cart;
    JSONObject json;
    jsonParser jParser = new jsonParser();
    JSONArray directory;

    /**
     * Returns a new instance of this fragment for the given section number.
     */
    public static Fragment newInstance(int sectionNumber) {
        CheckoutFragment fragment = new CheckoutFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);

        return fragment;
    }

    public CheckoutFragment() {

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        cart = Dashboard.datasource.getAllProducts();
        View v = inflater.inflate(R.layout.fragment_checkout, container,
                false);
        Button order = (Button) v.findViewById(R.id.order);
        order.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Order Submitted",
                        Toast.LENGTH_SHORT).show();
                submitOrder();
                flag = false;

            }
        });

        CheckoutArrayAdapter checkoutAdapter = new CheckoutArrayAdapter(
                container.getContext(), R.layout.fragment_checkout,
                R.layout.checkout_list_item, cart);
        setListAdapter(checkoutAdapter);



        Dashboard.datasource = DisplayProduct.datasource;

        return v;


    }

    @Override
    public void onViewCreated(View view, Bundle savedInstanceState){
        final SwipeDetector swipeDetector = new SwipeDetector();
        final ListView lv = getListView();

        lv.setOnTouchListener(swipeDetector);
        lv.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                if (swipeDetector.swipeDetected()){
                    // do the onSwipe action
                    Log.d("Swipe", "spipe");
                    try{
                    Dashboard.datasource.removeProduct( (position + 1) + "");
                    lv.deferNotifyDataSetChanged();
                    }
                    catch(Exception e){
                        Log.e("Swipe Error", Log.getStackTraceString(e) );
                    }



                } else {
                    // do the onItemClick action

                }
            }
        });

    }



    protected void submitOrder() {

        OrderTask order = new OrderTask();
        order.execute();

    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        ((Dashboard) activity).onSectionAttached(getArguments().getInt(
                ARG_SECTION_NUMBER));
    }

    public class CheckoutArrayAdapter extends ArrayAdapter<Entry> {
        private final LayoutInflater mInflater;
        private List<Entry> cart;

        public CheckoutArrayAdapter(Context context, int listViewLayout,
                int listItemLayout, List<Entry> cartItems) {
            super(context, listViewLayout, listItemLayout, cartItems);
            mInflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            cart = cartItems;
        }

        /**
         * Populate new items in the list.
         */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View view;

            if (convertView == null) {
                view = mInflater.inflate(R.layout.checkout_list_item,
                        parent, false);
            } else {
                view = convertView;
            }
            Entry item = getItem(position);
            ((TextView) view.findViewById(R.id.cart_entry)).setText(item
                    .getQty()
                    + "x  "
                    + item.getName()
                    + "\t"
                    + item.getSku() + " ");

            return view;
        }

    }

    public class OrderTask extends AsyncTask<String, Void, JSONObject> {

        protected void onPreExecute() {

        }

        protected JSONObject doInBackground(final String... args) {

            // URL used to place an order.

            String BASEURL = "http://api.vendture.com/v1/api.php?method=sendOrder&"
                    + "username="
                    + Dashboard.getInputUsername()
                    + "&pass="
                    + Dashboard.getInputPassword()
                    + "&key=0694ca6ec483864e11d4e8867d0ca4db" + "&pName=";
            // for loop to add names
            for (Entry e : cart) {
                BASEURL += e.getName() + ",";
            }
            BASEURL += "&pSku=";
            for (Entry e : cart) {
                BASEURL += e.getSku() + ",";
            }
            BASEURL += "&pQty=";
            for (Entry e : cart) {
                BASEURL += e.getQty() + ",";
            }

            Log.d("URL", BASEURL);

            json = jParser.getJSONfromURL(BASEURL);
            return json;

        }// end doInBackground

        protected void onPostExecute(JSONObject s) {
            Log.d("Step: ", "AsyncTask, OnPostExecute");

            try {
                if (s.getString("error").equals("0")
                        && s.getString("status").equals("Success!")){
                    Toast.makeText(getActivity().getBaseContext(),
                            "Order Successful", Toast.LENGTH_SHORT).show();
                    //Need command to clear all rows in the database here.
                    datasource.getDatabase().execSQL("delete from " + datasource.getDbHelper().TABLE_COMPANY);


                }
                else Toast.makeText(getActivity().getBaseContext(),
                        "Not Sure if it worked!!", Toast.LENGTH_SHORT).show();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }// end onPostExecute
    } // End Request
} // End Checkout Fragment

以下是我的删除代码,名为:

public void removeProduct(String id){
    Log.d("Removing", "Removing id");
    Log.d("Row to remove", id+"");
    String[]whereArgs = new String[] {id};

    int rem = database.delete(MySQLiteHelper.TABLE_COMPANY, MySQLiteHelper.COLUMN_ID+"=?", whereArgs);
    Log.d("Affected Rows", rem+"");
}

注销输出:

 06-13 11:10:05.771: E/Swipe Error(2803): java.lang.NullPointerException
06-13 11:10:05.771: E/Swipe Error(2803):    at com.bluelabelhosting.安卓.vendturevending.Dashboard$CheckoutFragment$2.onItemClick(Dashboard.java:360)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.widget.AdapterView.performItemClick(AdapterView.java:301)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.widget.AbsListView.performItemClick(AbsListView.java:1507)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.widget.AbsListView$PerformClick.run(AbsListView.java:3336)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.widget.AbsListView.onTouchEvent(AbsListView.java:4632)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.View.dispatchTouchEvent(View.java:7831)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2435)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2441)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2174)
06-13 11:10:05.771: E/Swipe Error(2803):    at com.安卓.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2326)
06-13 11:10:05.771: E/Swipe Error(2803):    at com.安卓.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1612)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.app.Activity.dispatchTouchEvent(Activity.java:2494)
06-13 11:10:05.771: E/Swipe Error(2803):    at com.安卓.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2274)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.View.dispatchPointerEvent(View.java:8039)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4668)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4556)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:4261)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:4318)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:4207)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:4176)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:4184)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:4150)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:6302)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:6240)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:6211)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:6382)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:188)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.os.MessageQueue.nativePollOnce(Native Method)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.os.MessageQueue.next(MessageQueue.java:132)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.os.Looper.loop(Looper.java:124)
06-13 11:10:05.771: E/Swipe Error(2803):    at 安卓.app.ActivityThread.main(ActivityThread.java:5455)
06-13 11:10:05.771: E/Swipe Error(2803):    at java.lang.reflect.Method.invokeNative(Native Method)
06-13 11:10:05.771: E/Swipe Error(2803):    at java.lang.reflect.Method.invoke(Method.java:525)
06-13 11:10:05.771: E/Swipe Error(2803):    at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1187)
06-13 11:10:05.771: E/Swipe Error(2803):    at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
06-13 11:10:05.771: E/Swipe Error(2803):    at dalvik.system.NativeStart.main(Native Method)

共 (0) 个答案